文科生如何理解循环神经网络(RNN)?
这一份视频教程中,我会用简明的例子和手绘图,为你讲解循环神经网络(Recurrent Neural Network, RNN)的原理和使用方法。
关于深度学习,我已经为你讲解了不少内容了。
咱们简单回顾一下。常见的深度学习任务,面对的数据类型主要是三类:
第一类,是结构化数据,也就是样本和属性组成的表格。例如《如何用Python和深度神经网络锁定即将流失的客户?》一文中,我们用到的表格:
这种数据格式,最为简单。你也很容易理解深度神经网络的结构和处理方法。
第二类,是图像数据。《如何用 Python 和 fast.ai 做图像深度迁移学习?》一文中,我给你详细介绍过如何用卷积神经网络来处理它。
第三类,是序列数据,例如文本。《如何用 Python 和深度迁移学习做文本分类?》一文里面,咱们已经展示了如何使用 fast.ai 提供的语言模型对其进行处理。
其中,图像和序列数据,处理起来更需要你对深度神经网络结构的理解。
作为文科生,你在学习卷积神经网络和循环神经网络的时候,可能会遇到一些问题。因为它们大多采用比较复杂的结构图和公式进行描述。
当然,你看到了,即便你对于循环神经网络不了解,把它当成一个黑箱,你依然可以用高阶的深度学习框架,例如 fast.ai ,执行自然语言处理任务,而且效果还很突出。
François Chollet 在他的 "Deep Learning with Python" 一书中,也提到过这种观点(注意这里说的是 RNN 的一个变种,叫做 LSTM):
you don’t need to understand anything about the specific architecture of an LSTM cell; as a human, it shouldn’t be your job to understand it.
但是注意, François Chollet 后面还有一句话:
Just keep in mind what the LSTM cell is meant to do.
也就是说,它的实现细节,你不需要考虑。
当然,它的作用,你还是得了解的。
如果你需要做研究,就得针对具体的任务,对神经网络中的各种模块进行调整、拼装和整合。
这时候,如果你对深度神经网络的理解,基本上等同于黑箱,那么你甚至都不知道该如何把它的输出和其他模块拼接起来。
之前,我给你做了个视频讲解《文科生如何理解卷积神经网络?》,为你把卷积神经网络的原理进行了拆解剖析。
从读者和观众们的反馈来看,许多人觉得有帮助。
有不少人留言,希望我以同样通俗易懂的讲法,讲讲用于处理序列数据(例如文本)的循环神经网络(Recurrent Neural Network, RNN)的原理。
其实,我也早就想为你讲解这一部分的知识。无奈序列是个动态的概念,所以用文字来给你讲解循环神经网络模型,效率不高。
好在,我最近刚刚学会,如何在录制视频的时候,使用手写输入。于是我立即把这一技术,纳入到咱们的教程制作中来。
我花了一个晚上的时间,为你做了这份视频教程。已发布到了腾讯视频,链接在这里。
从我们耳熟能详的一个故事讲起,触类旁通,让你更容易理解循环神经网络的作用、特点和结构。
除了前文提到的一些材料,视频中还提及了词嵌入(word embedding)的相关知识。这一部分,你可以参考《如何用Python处理自然语言?(Spacy与Word Embedding)》和《如何用 Python 和 gensim 调用中文词嵌入预训练模型?》。
希望这份视频教程,对你了解循环神经网络能有帮助。
祝(深度)学习愉快!
喜欢请点赞和打赏。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。
如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。
由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。
知识星球入口在这里: